home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 September
/
CHIP 1996 szeptember (CD07).zip
/
CHIP_CD07.ISO
/
sac
/
pack
/
rar200sa.exe
/
rar
/
TECHNOTE.DOC
< prev
next >
Wrap
Text File
|
1996-05-24
|
10KB
|
360 lines
██████╗ █████╗ ██████╗
██╔══██╗ ██╔══██╗ ██╔══██╗ RAR verzia 2.00 - Technicke informacie
██████╔╝ ███████║ ██████╔╝ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
██╔══██╗ ██╔══██║ ██╔══██╗
██║ ██║ ██║ ██║ ██║ ██║
╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
┌─────────────────────────────────────────────────────────────────────┐
│TU POPISOVANY FORMAT ARCHIVU JE PLATNY LEN PRE VERZIE NOVSIE AKO 1.50│
└─────────────────────────────────────────────────────────────────────┘
╔════════════════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Suborovy format archivu RARu ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════════════════════════════════════╝
Archivny subor sa sklada z blokov premenlivej dlzky. Poradie tychto
blokov moze byt rozne, ale prvy blok musi byt znackovy blok nasledovany
blokom hlavicky archivu.
Kazdy blok zacina nasledujucimi polami:
HEAD_CRC 2 bajty CRC celeho bloku alebo casti bloku
HEAD_TYPE 1 bajt Typ bloku
HEAD_FLAGS 2 bajty Priznaky bloku
HEAD_SIZE 2 bajty Velkost bloku
ADD_SIZE 4 bajty Volitelne pole - velkost pridaneho bloku
Pole ADD_SIZE je pritomne len ak (HEAD_FLAGS & 0x8000) != 0
Celkova velkost bloku je HEAD_SIZE ak (HEAD_FLAGS & 0x8000) == 0
a HEAD_SIZE+ADD_SIZE ak je pole ADD_SIZE pritomne - ked
(HEAD_FLAGS & 0x8000) != 0.
V kazdom bloku nasledujuce bity v HEAD_FLAGS maju spolocny vyznam:
0x4000 - ak nastaveny, starsie verzie RARu ignoruju tento blok
a odstrania ho pri aktualizacii archivu.
ak nulovy, blok je kopirovany do noveho archivneho suboru
pri aktualizacii archivu;
0x8000 - ak nastaveny, pole ADD_SIZE je pritomne a celkova velkost bloku
je HEAD_SIZE+ADD_SIZE.
Deklarovane typy blokov:
HEAD_TYPE=0x72 znackovy blok
HEAD_TYPE=0x73 hlavicka archivu
HEAD_TYPE=0x74 hlavicka suboru
HEAD_TYPE=0x75 hlavicka komentara
HEAD_TYPE=0x76 extra informacia
HEAD_TYPE=0x77 podblok
HEAD_TYPE=0x78 zachranny zaznam
Komentarovy blok je momentalne pouzivany len v inych blokoch a nevyskytuje
sa samostatne.
Archiv sa spracovava nasledujucim sposobom:
1. Precita a skontroluje sa znackovy blok
2. Precita sa hlavicka archivu
3. Precitaju alebo vynechaju sa bajty HEAD_SIZE-velkost(MAIN_HEAD)
4. Ak nastal koniec archivu, spracuje sa ukoncenie archivu, inac
sa nacita 7 bajtov do poli HEAD_CRC, HEAD_TYPE, HEAD_FLAGS, HEAD_SIZE.
5. Testuje sa HEAD_TYPE.
V pripade, ze je potrebne citat blok:
ak HEAD_TYPE==0x74
precita sa hlavicka suboru ( prvych 7 bajtov je uz precitanych )
precita alebo vynecha sa HEAD_SIZE-velkost(FILE_HEAD) bajtov
precita alebo vynecha sa FILE_SIZE bajtov
inac
precita sa zodpovedajuci blok HEAD_TYPE:
precita sa HEAD_SIZE-7 bajtov
ak (HEAD_FLAGS & 0x8000)
precita sa ADD_SIZE bajtov
V pripade, ze je potrebne vynechat blok:
vynecha sa HEAD_SIZE-7 bajtov
ak (HEAD_FLAGS & 0x8000)
vynecha sa ADD_SIZE bajtov
6. pokracuje sa bodom 4.
╔════════════════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Formaty blokov ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════════════════════════════════════╝
Znackovy blok ( MARK_HEAD )
HEAD_CRC Vzdy 0x6152
2 bajty
HEAD_TYPE Typ hlavicky: 0x72
1 bajt
HEAD_FLAGS Vzdy 0x1a21
2 bajty
HEAD_SIZE Velkost bloku = 0x0007
2 bajty
Znackovy blok je momentalne reprezentovany pevnou sekvenciou
bajtov: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00
Hlavicka archivu ( MAIN_HEAD )
HEAD_CRC CRC poli HEAD_TYPE az RESERVED2
2 bajty
HEAD_TYPE Typ hlavicky: 0x73
1 bajt
HEAD_FLAGS Bitove priznaky:
2 bajty
0x01 - Atribut zvazku (archivny zvazok)
0x02 - Pritomnost archivneho komentara
0x04 - Atribut uzamknutia archivu
0x08 - Solid atribut (solid archiv)
0x10 - Nepouzite
0x20 - Pritomnost AV informacie
zvysne bity v HEAD_FLAGS su rezervovane pre
interne pouzitie
HEAD_SIZE Celkova velkost hlavicky archivu vcetne archivnych komentarov
2 bajty
RESERVED1 Rezervovane
2 bajty
RESERVED2 Rezervovane
4 bajty
Komentarovy blok je pritomny ak (HEAD_FLAGS & 0x02) != 0
Hlavicka suboru (Suboru v archive)
HEAD_CRC CRC poli HEAD_TYPE az FILEATTR
2 bajty a nazvu suboru
HEAD_TYPE Typ hlavicky: 0x74
1 bajt
HEAD_FLAGS Bitove priznaky:
2 bajty
0x01 - subor pokracuje z predchadzajuceho zvazku
0x02 - subor pokracuje na nasledujucom zvazku
0x04 - subor je zakryptovany pomocou hesla
0x08 - pritomny komentar suboru
0x10 - je pouzita informacia z predchadzajucich suborov
(solid priznak) (pre RAR 2.0 a novsie)
bity 7 6 5 (pre RAR 2.0 a novsie)
0 0 0 - velkost slovnika 64 kB
0 0 1 - velkost slovnika 128 kB
0 1 0 - velkost slovnika 256 kB
0 1 1 - velkost slovnika 512 kB
1 0 0 - velkost slovnika 1024 kB
1 0 1 - rezervovane
1 1 0 - rezervovane
1 1 1 - subor je adresar
(HEAD_FLAGS & 0x8000) == 1, pretoze uplna
velkost bloku je HEAD_SIZE + PACK_SIZE
HEAD_SIZE Celkova velkost hlavicku suboru vcetne nazvu suboru
2 bajty a komentarov
PACK_SIZE Velkost suboru po kompresii
4 bajty
UNP_SIZE Velkost suboru po rozbaleni
4 bajty
HOST_OS Operacny system pouzity pre archivaciu
1 bajt 0 - MS DOS
1 - OS/2
2 - Win32
3 - Unix
FILE_CRC CRC suboru
4 bajty
FTIME Datum a cas v standardnom MS DOS formate
4 bajty
UNP_VER Verzia RARu potrebna na extrakciu suboru
1 bajt
METHOD Metoda kompresie
1 bajt
NAME_SIZE Dlzka nazvu suboru
2 bajty
ATTR Atributy suboru
4 bajty
FILE_NAME Nazov suboru - retazec o dlzke NAME_SIZE bajtov
Komentarovy blok je pritomny ak (HEAD_FLAGS & 0x08) != 0
Komentarovy blok
HEAD_CRC CRC poli HEAD_TYPE az COMM_CRC
2 bajty
HEAD_TYPE Typ hlavicky: 0x75
1 bajt
HEAD_FLAGS Bitove priznaky
2 bajty
HEAD_SIZE Velkost hlavicky komentara + velkost komentara
2 bajty
UNP_SIZE Velkost komentaru po rozbaleni
2 bajty
UNP_VER Verzia RARu potrebna na extrakciu komentara
1 bajt
METHOD Metoda kompresie
1 bajt
COMM_CRC CRC komentara
2 bajty
COMMENT Text komentara
Blok extra informacie
HEAD_CRC CRC bloku
2 bajty
HEAD_TYPE Typ hlavicky: 0x76
1 bajt
HEAD_FLAGS Bitove priznaky
2 bajty
HEAD_SIZE Celkova velkost bloku
2 bajty
INFO Ine data
Podblok
Po objekte v archive (blok alebo hlavicka) moze nasledovat podblok.
Podblok je zavisly na hlavnom objekte. Podblok moze byt vymazany
alebo preneseny do novej verzie archivu, ak je archiv aktualizovany.
Podblok obsahuje nasledujuce polia:
HEAD_CRC CRC bloku
2 bajty
HEAD_TYPE Typ hlavicky: 0x77
1 bajt
HEAD_FLAGS Bitove priznaky
2 bajty
(HEAD_FLAGS & 0x8000) == 1, pretoze uplna
velkost bloku je HEAD_SIZE + DATA_SIZE
HEAD_SIZE Celkova velkost bloku
2 bajty
DATA_SIZE Celkova velkost dat
4 bajty
SUB_TYPE Typ podbloku
2 bajty
RESERVED Musi byt 0
1 bajt
Ine polia Ine polia v zavislosti od typu podbloku
Podblok rozsirenych atributov OS/2
HEAD_CRC CRC bloku
2 bajty
HEAD_TYPE Typ hlavicky: 0x77
1 bajt
HEAD_FLAGS Bitove priznaky
2 bajty
(HEAD_FLAGS & 0x8000) == 1, pretoze uplnal
velkost bloku je HEAD_SIZE + DATA_SIZE
HEAD_SIZE Celkova velkost bloku
2 bajty
DATA_SIZE Celkova velkost dat (velkost skomprimovanych rozsirenych
4 bajty atributov)
SUB_TYPE 0x100
2 bajty
RESERVED Musi byt 0
1 bajt
UNP_SIZE velkost rozsirenych atributov po rozbaleni
4 bajty
UNP_VER Verzia RARu potrebna na extrakciu rosirenych atributov
1 bajt
METHOD Metoda kompresie
1 bajt
EA_CRC CRC rozsirenych atributov
4 bajty
╔════════════════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Applikacne poznamky ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════════════════════════════════════╝
1. Pri spracovani SFX archivu musite vynechat SFX modul hladanim
znackoveho bloku v archive. V samotnom SFX module sa nenachadza sekvencia
znackoveho bloku (0x52 0x61 0x72 0x21 0x1a 0x07 0x00).
2. CRC je kalkulovany pouzitim standardardneho polynomu 0xEDB88320.
V pripade, ze velkost CRC je mensia ako 4 bajty, su pouzite len dolne bajty.
3. Zakodovanie metody kompresie:
0x30 - ukladanie
0x31 - najrychlejsia kompresia
0x32 - rychla kompresia
0x33 - normalna kompresia
0x34 - dobra kompresia
0x35 - najlepsia kompresia
4. Verzia RARu potrebna na extrakciu je zakodovana ako 10 * hlavne cislo
verzie + minoritne cislo verzie.